CC = gcc
CFLAGS = -Wall -Wextra -g
LDFLAGS = -lm

SRC_DIR = src
LIB_DIR = lib
TEST_DIR = test

TARGET = scicalc
TEST_TARGET = test_scicalc

all: $(TARGET)

$(TARGET): libscicalc.a
	$(MAKE) -C $(SRC_DIR)
	$(CC) $(CFLAGS) -o $(SRC_DIR)/*.o -L$(LIB_DIR) -lscicalc $(LDFLAGS)

libscicalc.a:
	$(MAKE) -C $(LIB_DIR)
	ar rcs $@ $(LIB_DIR)/*.o

test: $(TEST_TARGET)
	./$(TEST_TARGET)

$(TEST_TARGET): libscicalc.a
	$(MAKE) -C $(TEST_DIR)
	$(CC) $(CFLAGS) -o $@ $(TEST_DIR)/*.o -L$(LIB_DIR) -lscicalc $(LDFLAGS)

clean:
	$(MAKE) -C $(LIB_DIR) clean
	$(MAKE) -C $(SRC_DIR) clean
	$(MAKE) -C $(TEST_DIR) clean
	rm -f $(TARGET) $(TEST_TARGET)

.PHONY: all test clean